Учебный курс: Подготовка на 1С:Специалист по платформе 1С:Предприятие 8.3

Общие приемы и механизмы решения задач – тема № 11:
Какие навыки в использовании управляемых блокировок потребуются на экзамене

В один момент времени можно выполнить только одну операцию записи данных в конкретный регистр. При одновременной попытке такой записи платформа позволит это сделать первому, кто пытается выполнить эту операцию, а второму придется ожидать своей очереди.

Момент, когда регистр занят и недоступен для чтения или записи другим пользователям, называется «блокировкой».

Когда база данных одновременно используется несколькими пользователями, в работе механизмов списания товаров могут возникать проблемы. Например, могут появиться отрицательные остатки товаров. Так бывает, когда пользователи практически одновременно пытаются списать один и тот же товар (например, оформить продажу). То есть система сообщает один и тот же результат при получении данных об остатке товаров, если информацию запрашивает более чем один пользователь (например, два).

Почему так происходит

Начнем с понятия транзакция. Транзакция – это последовательность изменений в базе данных, которая может быть завершена только полностью, иначе производится отмена всех изменений. Для обеспечения целостности данных все объекты БД записываются в транзакции.

Транзакция при проведении документа длится некоторое время. Остатки по номенклатуре получаются внутри транзакции, но изменяются только по ее завершении. Что происходит, когда пользователи проводят документы одновременно:

Получение остатков при одновременном проведении документов

Рисунок 1 – Получение остатков при одновременном проведении документов

Как видно на схеме (рис. 1), при проведении двух документов одновременно получаются одинаковые остатки номенклатуры. Полученный остаток может быть больше, чем требуется каждому пользователю в отдельности, но меньше, чем им требуется вместе. При этом оба документа могут быть успешно проведены. В результате итоговый остаток получится отрицательным. Контроль остатков не срабатывает.

Одновременное проведение документов пользователями

Рисунок 2 – Одновременное проведение документов пользователями

На рисунке два пользователя одновременно проводят продажу мониторов LG. При контроле остатков система получает остаток 10 шт., и оба документа проводятся. Как итог – минус 5 мониторов LG.

Если Документ № 2 будет проводиться после окончания проведения Документа № 1, то контроль остатков отработает корректно и не даст отгрузить товар в минус:

Последовательное проведение документов пользователями

Рисунок 3 – Последовательное проведение документов пользователями

Не стоит недооценивать данную проблему даже в том случае, если в системе работают всего два пользователя. Они могут проводить документы практически одновременно, например, если один из них выполняет групповое проведение документов.

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии закрыты